package main

import (
	"fmt"
	"sort"
)

//sort.Strings() 会将string数组排序
//在sort包中定义了一个接口叫Interface，这个接口中主要定义了三个方法Len Less Swap，
//而包中的func Sort(data Interface)方法就依靠这三个方法来实现排序。
//sort包中为[]int []float64 []string等提供了实现方法。


func main(){
	sortStringExample1()
	sortPersonsExample()
}

func sortStringExample1(){
	fmt.Println("--------------------sortStringExample1()--------------------")
	var ss []string=[]string{"hello","world","Allan","Ellen"}
	fmt.Println(ss)
	sort.Strings(ss)
	fmt.Println(ss)
}

func sortPersonsExample(){
	fmt.Println("--------------------sortPersonsExample()--------------------")
	var ps []Person=[]Person{
		Person{Name:"Linda",Age:20},
		Person{Name:"Zack",Age:19},
		Person{Name:"Jack",Age:43},
		Person{Name:"Allan",Age:32},
		Person{Name:"Bob",Age:28},
	}
	fmt.Println(ps)
	sort.Sort(PersonSlice(ps))
	fmt.Println(ps)
}

type Person struct{
	Name string
	Age int
}

type PersonSlice []Person

func (p PersonSlice)Len()int{
	return len(p)
}

func (p PersonSlice)Less(i, j int) bool{
	return p[i].Age<p[j].Age
//	return p[i].Name<p[j].Name
}

func (p PersonSlice)Swap(i, j int){
	p[i],p[j]=p[j],p[i]
}